package com.retail.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 响应状态码枚举
 *
 * @author retail
 * @since 2024-01-01
 */
@Getter
@AllArgsConstructor
public enum ResultCode {

  /**
   * 成功
   */
  SUCCESS(200, "操作成功"),

  /**
   * 失败
   */
  ERROR(500, "操作失败"),

  /**
   * 参数错误
   */
  PARAM_ERROR(400, "参数错误"),

  /**
   * 未授权
   */
  UNAUTHORIZED(401, "未授权"),

  /**
   * 禁止访问
   */
  FORBIDDEN(403, "禁止访问"),

  /**
   * 资源不存在
   */
  NOT_FOUND(404, "资源不存在"),

  /**
   * 方法不允许
   */
  METHOD_NOT_ALLOWED(405, "方法不允许"),

  /**
   * 请求超时
   */
  REQUEST_TIMEOUT(408, "请求超时"),

  /**
   * 服务器内部错误
   */
  INTERNAL_SERVER_ERROR(500, "服务器内部错误"),

  /**
   * 系统错误
   */
  SYSTEM_ERROR(500, "系统错误"),

  /**
   * 服务不可用
   */
  SERVICE_UNAVAILABLE(503, "服务不可用"),

  /**
   * 业务异常
   */
  BUSINESS_ERROR(1000, "业务异常"),

  /**
   * 数据不存在
   */
  DATA_NOT_EXIST(1001, "数据不存在"),

  /**
   * 数据已存在
   */
  DATA_ALREADY_EXIST(1002, "数据已存在"),

  /**
   * 数据状态异常
   */
  DATA_STATUS_ERROR(1003, "数据状态异常"),

  /**
   * 用户不存在
   */
  USER_NOT_EXIST(2001, "用户不存在"),

  /**
   * 用户已存在
   */
  USER_ALREADY_EXIST(2002, "用户已存在"),

  /**
   * 密码错误
   */
  PASSWORD_ERROR(2003, "密码错误"),

  /**
   * 用户被禁用
   */
  USER_DISABLED(2004, "用户被禁用"),

  /**
   * Token过期
   */
  TOKEN_EXPIRED(3001, "Token过期"),

  /**
   * Token无效
   */
  TOKEN_INVALID(3002, "Token无效"),

  /**
   * 权限不足
   */
  PERMISSION_DENIED(3003, "权限不足");

  /**
   * 状态码
   */
  private final Integer code;

  /**
   * 状态消息
   */
  private final String message;
}
